//请说出下列代码最终输出的结果，并解释为什么？

var a = 10;
var obj = {
  a: 20,
  fn() {
    setTimeout(() => {
      console.log(this.a);
    });
  },
};
obj.fn();


/**
 * 
 * 输出的结果为20
 * 
 * 
 * obj调用fn时，fn内部的this指向obj自己，并且定时器使用的是箭头函数
 * 使得setTimeout内部的this也指向obj
 * 而obj.a = 20
 * 
 */